const MyPromise = require('./myPromise');

const myPromise = new MyPromise((resolve, reject)=>{
    setTimeout(() => {
        // resolve('2success');
        reject('ssss');
        // throw new Error('executor error')
    }, 2000);
});
// function other() {
//     return new MyPromise((resolve,reject)=>{
//         resolve('333')
//     })
// }

myPromise.then(value=>{
    console.log(value);
    // throw new Error('error')
    return 666
}, err=>{
    console.log(err);
    return 888
}).then(value=>{
    console.log(value);
}, err=>{
    console.log(err);
})

/****  循环调用同一个promise对象 ****/
// let p1 = myPromise.then(value=>{
//     console.log(value);
//     return p1;
// });
// p1.then(value=>{
//     console.log(value);
// }, err=>{
//     console.log(err.message);
// });

/****    promise.then传空 ****/
// myPromise.then().then().then().then(value=>{
//     console.log(value);
// }, err=>{
//     console.log(err);
// })

/*****   promise.all     ****/
// function p1 () {
//     return new MyPromise(function (resolve, reject) {
//         setTimeout(function () {
//         // resolve('p1')
//         reject('error----')
//         }, 2000)
//     })
// }
// function p2 () {
//     return new MyPromise(function (resolve, reject) {
//         // reject('失败')
//         resolve('成功');  
//     })
// }
// MyPromise.all(['1','2',p1(),p2(),'5']).then(value=>{
//     console.log(value);
//     // throw new Error('error')
//     // return 666
// }, err=>{
//     console.log(err);
//     // return 888
// })

/****   promise.resolve  ****/
// MyPromise.resolve(p1()).then(value=>console.log(value))

/****    finally ****/
// p1().finally(()=>{ 
//     console.log('finally');
//     return p1();
// }).then(value=>{
//     console.log(value);
// }, err=>{
//     console.log(err);
// });

/****    catch ****/
// p1().finally(()=>{ 
//     console.log('finally');
//     return p1();
// }).then(value=>{
//     console.log(value);
// }).catch(err => console.log(err));